/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package gestInt.modelo;

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.validation.constraints.Size;
import javax.xml.bind.annotation.XmlRootElement;

/**
 *
 * @author elkin
 */
@Entity
@Table(name = "profesor")
@XmlRootElement
@NamedQueries({
    @NamedQuery(name = "Profesor.findAll", query = "SELECT p FROM Profesor p"),
    @NamedQuery(name = "Profesor.findByCodigo", query = "SELECT p FROM Profesor p WHERE p.profesorPK.codigo = :codigo"),
    @NamedQuery(name = "Profesor.findByExperiencia", query = "SELECT p FROM Profesor p WHERE p.experiencia = :experiencia"),
    @NamedQuery(name = "Profesor.findByPostgrado", query = "SELECT p FROM Profesor p WHERE p.postgrado = :postgrado"),
    @NamedQuery(name = "Profesor.findByOficina", query = "SELECT p FROM Profesor p WHERE p.oficina = :oficina"),
    @NamedQuery(name = "Profesor.findByTipo", query = "SELECT p FROM Profesor p WHERE p.tipo = :tipo"),
    @NamedQuery(name = "Profesor.findByDepartamento", query = "SELECT p FROM Profesor p WHERE p.departamento = :departamento"),
    @NamedQuery(name = "Profesor.findByIdpersona", query = "SELECT p FROM Profesor p WHERE p.profesorPK.idpersona = :idpersona")})
public class Profesor implements Serializable {
    private static final long serialVersionUID = 1L;
    @EmbeddedId
    protected ProfesorPK profesorPK;
    @Size(max = 45)
    @Column(name = "experiencia")
    private String experiencia;
    @Size(max = 45)
    @Column(name = "postgrado")
    private String postgrado;
    @Size(max = 45)
    @Column(name = "oficina")
    private String oficina;
    @Column(name = "tipo")
    private Integer tipo;
    @Size(max = 45)
    @Column(name = "departamento")
    private String departamento;
    @JoinColumn(name = "idpersona", referencedColumnName = "idpersona", insertable = false, updatable = false)
    @ManyToOne(optional = false)
    private Persona persona;

    public Profesor() {
    }

    public Profesor(ProfesorPK profesorPK) {
        this.profesorPK = profesorPK;
    }

    public Profesor(int codigo, int idpersona) {
        this.profesorPK = new ProfesorPK(codigo, idpersona);
    }

    public ProfesorPK getProfesorPK() {
        return profesorPK;
    }

    public void setProfesorPK(ProfesorPK profesorPK) {
        this.profesorPK = profesorPK;
    }

    public String getExperiencia() {
        return experiencia;
    }

    public void setExperiencia(String experiencia) {
        this.experiencia = experiencia;
    }

    public String getPostgrado() {
        return postgrado;
    }

    public void setPostgrado(String postgrado) {
        this.postgrado = postgrado;
    }

    public String getOficina() {
        return oficina;
    }

    public void setOficina(String oficina) {
        this.oficina = oficina;
    }

    public Integer getTipo() {
        return tipo;
    }

    public void setTipo(Integer tipo) {
        this.tipo = tipo;
    }

    public String getDepartamento() {
        return departamento;
    }

    public void setDepartamento(String departamento) {
        this.departamento = departamento;
    }

    public Persona getPersona() {
        return persona;
    }

    public void setPersona(Persona persona) {
        this.persona = persona;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (profesorPK != null ? profesorPK.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Profesor)) {
            return false;
        }
        Profesor other = (Profesor) object;
        if ((this.profesorPK == null && other.profesorPK != null) || (this.profesorPK != null && !this.profesorPK.equals(other.profesorPK))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "gestInt.modelo.Profesor[ profesorPK=" + profesorPK + " ]";
    }
    
}
